#include <ArduinoJson.h>
/*
 *功能：创建|获取Json长度字符串
 *{
 *  "sensor": "gps",
 *  "time": 1351824120,
 *  "data": [
 *     48.756080,
 *     2.302038
 *   ]
 * }
 */
 
void setup() {
  Serial.begin(9600);
  while (!Serial) {}
  
  // Json对象对象树的内存工具 静态buffer 200 是大小 如果这个Json对象更加复杂，那么就需要根据需要去增加这个值.
  StaticJsonBuffer<200> jsonBuffer;
  // StaticJsonBuffer 在栈区分配内存  --->>> 它也可以被 DynamicJsonBuffer（内存在堆区分配） 代替
  // DynamicJsonBuffer  jsonBuffer;

  JsonObject& root = jsonBuffer.createObject();    //"上面的这个Json对象",创建根，也就是顶节点 
  root["sensor"] = "gps";     //设置sensor(key):"gps"(value)
  root["time"] = 1351824120;    //设置time(key):"1351824120"(value)
 
  // 添加一个data数组
  JsonArray& data = root.createNestedArray("data");
  data.add(double_with_n_digits(48.756080,6)); //保留6位小数
  //如果直接写成  data.add(48.756080); 保留2位小数
  data.add(double_with_n_digits(2.302038,6));
  //上面的语句也可以写成 data.add(48.756080,6); 保留6位小数

  root.printTo(Serial);//单行打印
  // {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}
 
  Serial.print("\n");
 
  root.prettyPrintTo(Serial);//多行打印
  // This prints:
  // {
  //   "sensor": "gps",
  //   "time": 1351824120,
  //   "data": [
  //     48.756080,
  //     2.302038
  //   ]
  // }

  Serial.print("\n Json Length:");
  size_t jsonLen = root.measureLength();
  Serial.println(jsonLen); 
 }

  
void loop() {
  // not used in this example
}
